﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace JasRibbonApplicatie.Classes
{
    [Serializable()]
    class UserData:ISerializable
    {
        private static string DEFAULT_DIR = Properties.Settings.Default.USER_DATA_DIR;
        private int gebruikerId = 0;
        

        public List<String> MateriaalBeheerShownColumns { get; set; }
        public UserData(int gebruikerId)
        {
            this.gebruikerId = gebruikerId;
            this.MateriaalBeheerShownColumns = new List<string>();
        }
        private UserData(SerializationInfo info, StreamingContext ctxt)
        {
            MateriaalBeheerShownColumns = (List<String>)info.GetValue("MateriaalBeheerShownColumns", typeof(List<String>));
        }
            
        public static UserData Load(int gebruikerId)
        {
            if (!Directory.Exists(DEFAULT_DIR)) Directory.CreateDirectory(DEFAULT_DIR);
            if (File.Exists(DEFAULT_DIR + gebruikerId + ".osl"))
            {
                FileStream stream = File.Open(DEFAULT_DIR + gebruikerId + ".osl", FileMode.Open);
                Console.WriteLine("Lezen gebruikers info");
                BinaryFormatter bformatter = new BinaryFormatter();
                UserData ud = (UserData)bformatter.Deserialize(stream);
                stream.Close();
                ud.gebruikerId = gebruikerId;
                return ud;
            }
            else
            {
                return new UserData(gebruikerId);
            }
            
        }
        
        public void  GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("MateriaalBeheerShownColumns", MateriaalBeheerShownColumns);
        }

        public void save()
        {
            this.save(this.gebruikerId);
        }
        public void save(int gebruikerId)
        {
            BinaryFormatter bformatter = new BinaryFormatter();
            Stream stream = File.Open(DEFAULT_DIR + gebruikerId + ".osl", FileMode.Create);
            Console.WriteLine("Wegschrijven gebruikers info");
            bformatter.Serialize(stream, this);
            stream.Close();
        }
    }
}
